package com.dalin.framework.common.utils;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.dalin.framework.common.PropertyConst;

/*****************************************************************************
 * @content: 反射 运行                                                                                                                                                              *
 * @author : 那建林                                                                                                                                                                  *
 * @crtDate: 2010-03-01                                                     *
 ****************************************************************************/
public final class ReflectUtils {
	private ReflectUtils() {}
	private static final Log log = LogFactory.getLog(ReflectUtils.class);
	
	/*************************************************************************
	 * @content: 得到对象的属性及值
	 * @param  : obj 待检索的对象
	 * @author : 那建林
	 * @crtDate: 2010-03-01
	 * @chaDate: 2010-03-01
	 */
	public static void printAllPropertyValues(Object obj) throws Exception {
		StringBuffer buf = new StringBuffer();
		Class c = obj.getClass();
		buf.append(c.getName()).append(" [")
			.append(PropertyConst.LINE_SEPARATOR);
		Field[] fieldArr = c.getDeclaredFields();
		for(Field f :  fieldArr){
			f.setAccessible(true);
			buf.append(PropertyConst.TAB).append(f.getName())
				.append(PropertyConst.SPACE).append(PropertyConst.COLON)
				.append(PropertyConst.SPACE)
				.append(f.get(obj)).append(PropertyConst.LINE_SEPARATOR);
		}
		buf.append("] <---------------------测试结束");
		log.info(buf);
	}
	
	
	/*************************************************************************
	 * @content: 返回属性的修饰符字符串
	 * @param  : clazz 类
	 * @param  : fieldName 属性名称
	 * @return : String
	 * @author : 那建林
	 * @crtDate: 2010-03-10
	 * @chaDate: 2010-03-10
	 */	
	public static String getFieldModifiers(Class clazz, String fieldName) throws Exception {
		Field f = null;
			f = clazz.getField(fieldName);
 		return Modifier.toString(f.getModifiers());
	}
}
